package com.xyy.saas.payment.adpater.fumin.config;

import java.nio.charset.StandardCharsets;

/**
 * 默认参数配置
 *
 * @author tangjunmao
 * @date 2018/10/18
 */
public abstract class Configuration {

    private static final int TIMEOUT_DEFAULT = 300_000;

    /** 证书文件名称 */
//    public static String pfxFileName = "p1sign_new.pfx";
    public static String pfxFileName = "CFCA_FM.pfx";
    /** 证书文件密码 */
//    public static String pfxPassword = "11111111";
    public static String pfxPassword ="Eo6sZ7";

    /**
     * 富民银行的开放平台地址，如下是地址列表：
     * 沙箱环境：https://opensandbox.fbank.com
     * 生产环境：https://open.fbank.com
     */
    public abstract String remoteAddress();

    /**
     * 建立连接的超时时间，单位：毫秒
     */
    public int connectionTimeout() {
        return TIMEOUT_DEFAULT;
    }

    /**
     * 建立连接后，读取返回数据的超时时间，单位：毫秒
     */
    public int readTimeout() {
        return TIMEOUT_DEFAULT;
    }

    /**
     * 字符集， 默认UTF-8
     */
    public String charset() {
        return StandardCharsets.UTF_8.toString();
    }

    /**
     * 签名、验签算法类型，默认RSA
     */
    public String signType() {
        return CertConstants.ALGORITHM_RSA;
    }

    /**
     * 加解密算法类型，默认RSA
     */
    public String encryptType() {
        return CertConstants.ALGORITHM_RSA;
    }

    /**
     * 富民开放平台RSA公钥 用于上送加密
     */
    public abstract String fbankEncPubKey();

    /**
     * 富民开放平台RSA公钥 用于返回数据验签
     */
    public abstract String fbankSignPubKey();

    /**
     * 附近开放平台RSA公钥 用于支付
     * @return
     */
    public abstract String fBankPayPubKey();

    /**
     * 支付商户号
     * @return
     */
    public abstract String fBankPayMerchantId();

    /**
     * 支付签名秘钥
     * @return
     */
    public abstract String fBankPayMD5Key();
    /**
     * 商户的RSA私钥
     */
    public abstract String privateKey();

    /**
     * 商户私钥文件名
     */
    public String pfxFileName() {
        return pfxFileName;
    }

    /**
     * 商户私钥密码
     */
    public String pfxPassword() {
        return pfxPassword;
    }

    /**
     * 商户号
     */
    public abstract String merchantNo();

    /**
     * 渠道号
     */
    public String channelNo() {
        return "";
    }

    /**
     * 富民应用id
     */
    public abstract String appId();

    /**
     * 三方站点id
     */
    public abstract String siteId();

    /**
     * SDK版本号
     */
    public abstract String sdkVersion();
}
